package com.zuihai.app.mvp.contract;

import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
import com.zuihai.app.mvp.model.entity.BaseJson;
import com.zuihai.app.mvp.model.entity.FindItem;
import com.zuihai.app.mvp.ui.adapter.FindHomeRecyclerAdapter;
import com.zuihai.app.mvp.ui.adapter.FindRecyclerAdapter;

import rx.Observable;

/**
 * Created by Administrator on 2017/5/4 0004.
 */

public interface FindRecyclerContract {
    //对于经常使用的关于UI的方法可以定义到BaseView中,如显示隐藏进度条,和显示文字消息
    interface View extends IView {
        void bindAdapter(FindRecyclerAdapter adapter);
        void handleError(Throwable e);
        void bindFHAdapter(FindHomeRecyclerAdapter adapter);
    }

    //Model层定义接口,外部只需关心model返回的数据,无需关心内部细节,及是否使用缓存
    interface Model extends IModel {
        /**
         * 请求首页推荐数据
         * @return
         */
        Observable<BaseJson<FindItem>> requestHomeRecommend(int pageIndex, String userId);
        //发现推荐
        Observable<BaseJson<FindItem>> requestFindRecomment(int pageIndex, String userId);

        /**
         * 好货
         * @param pageIndex
         * @param userId
         * @return
         */
        Observable<BaseJson<FindItem>> requestGoods(String userId, int pageIndex);
        /**
         * 服务
         * @param pageIndex
         * @param userId
         * @return
         */
        Observable<BaseJson<FindItem>> requestService(String userId, int pageIndex);

        /**
         * 发现秘密
         */
        Observable<BaseJson<FindItem>> requestSecret(String userId, int pageIndex);

        /**
         * 有去处
         */
        Observable<BaseJson<FindItem>> requestWhither(String userId, int pageIndex);



        /**
         * 我的主页发现秘密
         * @param userId
         * @param myID
         * @param pageIndex
         * @return
         */
        Observable<BaseJson<FindItem>> requestMyFindSecret(String userId,String myID,int pageIndex);


        Observable<BaseJson<FindItem>> requestMyCommodity(String userId,String myID,int pageIndex);

    }

    interface Presenter{
        /**
         * 好货
         */
        void requestGoods(boolean isRefresh);
        /**
         * 服务
         */
        void requestService(boolean isRefresh);

        /**
         * 发现秘密
         */
        void requestSecret(boolean isRefresh);

        /**
         * 有去处
         */
        void requestWhither(boolean isRefresh);


    }
}